package com.code.qgjx.service;

import com.code.qgjx.entity.WorkPush;
import java.util.List;
import java.util.Map;

public interface WorkPushService {
    
    // 创建工作推送
    boolean createWorkPush(WorkPush workPush);
    
    // 删除工作推送
    boolean deleteWorkPush(Long id);
    
    // 更新工作推送
    boolean updateWorkPush(WorkPush workPush);
    
    // 获取工作推送详情
    Map<String, Object> getWorkPush(Long id);
    
    // 根据年份和学期查询工作推送
    List<Map<String, Object>> getWorkPushByYearAndSemester(String year, String semester);
    
    // 根据科室名称查询工作推送
    List<Map<String, Object>> getWorkPushByDepartment(String departmentName);
    
    // 根据状态查询工作推送
    List<Map<String, Object>> getWorkPushByState(Integer state);
    
    // 审批工作推送
    boolean approveWorkPush(Long id, Integer state, String remark);
    
    // 获取所有工作推送
    List<Map<String, Object>> getAllWorkPush();
    
    // 分页查询所有工作推送
    List<Map<String, Object>> getAllWorkPushWithPage(int start, int limit, String userId, String status);
    
    // 分页查询（根据年份和学期）
    List<Map<String, Object>> getWorkPushByYearAndSemesterWithPage(String year, String semester, int start, int limit, String userId);
    
    // 分页查询（根据科室名称）
    List<Map<String, Object>> getWorkPushByDepartmentWithPage(String departmentName, int start, int limit, String userId);
    
    // 分页查询（根据状态）
    List<Map<String, Object>> getWorkPushByStateWithPage(Integer state, int start, int limit, String userId);
    
    // 获取总数
    int getWorkPushCount(String userId);
    
    // 获取总数（根据年份和学期）
    int getWorkPushCountByYearAndSemester(String year, String semester, String userId);
    
    // 获取总数（根据科室名称）
    int getWorkPushCountByDepartment(String departmentName, String userId);
    
    // 获取总数（根据状态）
    int getWorkPushCountByState(Integer state, String userId);
    
    // 根据条件搜索工作推送（分页）
    List<Map<String, Object>> searchWorkPush(WorkPush searchWorkPush, int start, int limit);
    
    // 根据条件获取工作推送总数
    int getSearchWorkPushCount(WorkPush searchWorkPush);
} 